package bgai.gamelogic;

/**
 * Mossa illegale
 */
public class BadMoveException extends Exception {

	private static final long serialVersionUID = -2301849261426751713L;

	@SuppressWarnings("unused")
	private Move move= null;
	@SuppressWarnings("unused")
	private CheckerMove chkMove= null;
	@SuppressWarnings("unused")
	private SingleMove singMove= null;
	
	// MOVE
	
		public BadMoveException(Move move) {
			super(move.toString());
			this.move= (Move) move.clone();
		}

		public BadMoveException(Move move, String message) {
			super(message+ ": "+move.toString());
			this.move= (Move) move.clone();
		}

		public BadMoveException(Move move, String message, Throwable cause,
				boolean enableSuppression, boolean writableStackTrace) {
			super(message+ ": "+move.toString(), cause, enableSuppression, writableStackTrace);
			this.move= (Move) move.clone();
		}

		public BadMoveException(Move move, String message, Throwable cause) {
			super(message+ ": "+move.toString(), cause);
			this.move= (Move) move.clone();
		}

		public BadMoveException(Move move, Throwable cause) {
			super(move.toString(), cause);
			this.move= (Move) move.clone();
		}

		// CHECKER MOVE
		
		public BadMoveException(CheckerMove chkMove) {
			super(chkMove.toString());
			this.chkMove= (CheckerMove) chkMove.clone();
		}

		public BadMoveException(CheckerMove chkMove, String message) {
			super(message+ ": "+chkMove.toString());
			this.chkMove= (CheckerMove) chkMove.clone();
		}

		public BadMoveException(CheckerMove chkMove, String message, Throwable cause,
				boolean enableSuppression, boolean writableStackTrace) {
			super(message+ ": "+chkMove.toString(), cause, enableSuppression, writableStackTrace);
			this.chkMove= (CheckerMove) chkMove.clone();
		}

		public BadMoveException(CheckerMove chkMove, String message, Throwable cause) {
			super(message+ ": "+chkMove.toString(), cause);
			this.chkMove= (CheckerMove) chkMove.clone();
		}

		public BadMoveException(CheckerMove chkMove, Throwable cause) {
			super(chkMove.toString(), cause);
			this.chkMove= (CheckerMove) chkMove.clone();
		}

		// SINGLE MOVE
		
		public BadMoveException(SingleMove singMove) {
			super(singMove.toString());
			this.singMove= (SingleMove) singMove.clone();
		}

		public BadMoveException(SingleMove singMove, String message) {
			super(message+ ": "+singMove.toString());
			this.singMove= (SingleMove) singMove.clone();
		}

		public BadMoveException(SingleMove singMove, String message, Throwable cause,
				boolean enableSuppression, boolean writableStackTrace) {
			super(message+ ": "+singMove.toString(), cause, enableSuppression, writableStackTrace);
			this.singMove= (SingleMove) singMove.clone();
		}

		public BadMoveException(SingleMove singMove, String message, Throwable cause) {
			super(message+ ": "+singMove.toString(), cause);
			this.singMove= (SingleMove) singMove.clone();
		}

		public BadMoveException(SingleMove singMove, Throwable cause) {
			super(singMove.toString(), cause);
			this.singMove= (SingleMove) singMove.clone();
		}

		// VUOTO
		
		public BadMoveException() {
			super();
		}

		public BadMoveException(String message) {
			super(message);
		}

		public BadMoveException(String message, Throwable cause,
				boolean enableSuppression, boolean writableStackTrace) {
			super(message, cause, enableSuppression, writableStackTrace);
		}

		public BadMoveException(String message, Throwable cause) {
			super(message, cause);
		}

		public BadMoveException(Throwable cause) {
			super(cause);
		}
		

}
